package actividades;

import org.json.JSONException;
import org.json.JSONObject;

import tratamientoDatos.UsuarioSingleton;
import world.trainer.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import comunicacionServidor.FuncionesJSON;

public class LogueoActivity extends Activity {

	private UsuarioSingleton usuarioSingleton;
	private String loginErrorMsg;
	private EditText usuario, contrasenya;
	private Button loguearse, registrarse;
	private ProgressDialog dialog;
	private static String KEY_SUCCESS = "success";
	private boolean correcto;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.logeo_activity);
		correcto = false;

		usuarioSingleton = UsuarioSingleton.getInstance();
		dialog = ProgressDialog.show(this, "", "Cargando...", true);
		dialog.dismiss();

		if (usuarioSingleton.getEmail() == null) {

			usuario = (EditText) findViewById(R.id.editTextUsuario);
			contrasenya = (EditText) findViewById(R.id.editTextContrasenya);
			loguearse = (Button) findViewById(R.id.botonLoguearse);
			registrarse = (Button) findViewById(R.id.botonRegistrarse);

			registrarse.setOnClickListener(new OnClickListener() {

				public void onClick(View v) {
					finish();
					Intent intent = new Intent(getApplicationContext(),
							RegistroActivity.class);
					startActivity(intent);
				}
			});

			loguearse.setOnClickListener(new OnClickListener() {

				public void onClick(View v) {
					// Comprobamos que los datos del logueo son correctos en la
					// base de datos
					dialog.show();
					new ClaseComunicacion().execute();
				}
			});

		} else {
			finish();
			Intent main = new Intent(getApplicationContext(),
					MainActivity.class);
			Bundle bundle = new Bundle();
			bundle.putString("ACTIVITY", "start");
			main.putExtras(bundle);
			main.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
			startActivity(main);
		}

	}

	private class ClaseComunicacion extends AsyncTask<Void, Void, Void> {

		@Override
		protected Void doInBackground(Void... arg0) {
			loginErrorMsg = "Error de comunicacion";
			final String nombreUsuario = usuario.getText().toString();
			final String contrasenyaUsuario = contrasenya.getText().toString();
			FuncionesJSON userFunction = new FuncionesJSON();
			JSONObject json = new JSONObject();
			try {
				json = userFunction
						.loginUser(nombreUsuario, contrasenyaUsuario);

				try {
					if (json.getString(KEY_SUCCESS) != null) {

						String res = json.getString(KEY_SUCCESS);
						if (Integer.parseInt(res) == 1) {
							correcto = true;
							JSONObject json_user = json.getJSONObject("user");
							usuarioSingleton.setEmail(nombreUsuario);
							usuarioSingleton.setPeso(Float.parseFloat(json_user
									.getString("peso")));
						} else {
							loginErrorMsg = "Credenciales incorrectos";
							correcto = false;
						}
					} else {
						correcto = false;
					}
				} catch (JSONException e) {
					e.printStackTrace();
				}
			} catch (Exception e) {
				e.printStackTrace();
				correcto = false;
			}

			return null;
		}

		@Override
		protected void onPostExecute(Void result) {
			dialog.dismiss();
			finish();
			if (correcto) {
				Intent main = new Intent(getApplicationContext(),
						MainActivity.class);
				Bundle bundle = new Bundle();
				bundle.putString("ACTIVITY", "start");
				main.putExtras(bundle);
				main.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				startActivity(main);
			} else {
				Toast toast = Toast.makeText(getApplicationContext(),
						loginErrorMsg, Toast.LENGTH_LONG);
				toast.show();
				Intent main = new Intent(getApplicationContext(),
						LogueoActivity.class);
				main.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				startActivity(main);
			}

		}
	}

	public void onPause() {

		finish();
		super.onPause();
	}
}
